// Copyright  2004-2008 Backplane Ltd.
//
// This file is part of Ubiquity formsPlayer
//
// Ubiquity formsPlayer is free software; you can redistribute it and/or modify it
// under the terms of the GNU General Public License as published by the
// Free Software Foundation; either version 3 of the License, or (at your
// option) any later version.
//
// Ubiquity formsPlayer is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
// more details.
//
// You should have received a copy of the GNU General Public License
// along with Ubiquity formsPlayer If not, see <http://www.gnu.org/licenses/>.
//	
//
//   Purpose: implementation of CXFormsParseUpload.
//   $Id$


#include "stdafx.h"
#include "parseUpload.h"
#include "upload.h"
#include "tags.h"


void CXFormsParseUpload::CheckElement(IHTMLElement *pElem, BSTR bstrTag, CImpl* pImpl)
{
	HRESULT hr = S_OK;
	if (wcscmp(bstrTag, TAG_FILENAME) == 0)
	{
		CImplFileName* pFileName = new CImplFileName();
		CXFormsParseFileName parse(pFileName);
		pFileName->m_pXForms = pImpl->m_pXForms;
		hr = parse.Parse(pElem, pFileName);

		if (S_OK == hr)
			hr = pFileName->init(pImpl);

		((CImplUpload*) pImpl)->m_pFileName = pFileName;
	}
	else if (wcscmp(bstrTag, TAG_MEDIATYPE) == 0)
	{
		CImplMediaType* pMedia = new CImplMediaType();
		CXFormsParseMediaType parse(pMedia);
		pMedia->m_pXForms = pImpl->m_pXForms;
		hr = parse.Parse(pElem, pMedia);

		if (S_OK == hr)
			hr = pMedia->init(pImpl);

		((CImplUpload*) pImpl)->m_pMediaType = pMedia;
	}
	else
		__super::CheckElement(pElem,bstrTag,pImpl);
}
	CXFormsParseUpload::CXFormsParseUpload(CImplUpload* pImpl)
		: CXFormsParseFormControlInput( pImpl)
	{
		addAttributeCheck(ATTR_MEDIA, &pImpl->m_sMediatype);
	};
	CXFormsParseFileName::CXFormsParseFileName(CImplFileName* pImpl)
		: CXFormsParseSingleNodeBinding(pImpl)
	{
	};
	CXFormsParseMediaType::CXFormsParseMediaType(CImplMediaType* pImpl)
		: CXFormsParseSingleNodeBinding(pImpl)
	{
	};